class opt_feat
{
public:  
    inline opt_feat(const std::string  in_path, 
		    const std::string  in_actionNames, 
		    const std::string  in_feat_path,
		    const uword in_col, 
		    const uword in_row,
		    const uvec in_peo_train,
		    const uvec in_peo_test,
		    const int in_run
 		  );
    
    inline void create_data_list();
    inline void features_per_action_training( int sc );
    inline void create_gmm_action( int in_Ncent, int sc );
    
    inline void feature_multi_action( );
    inline void gmm_multi_action( int in_Ncent, string person_list,   int sc);
    inline void feature_video(std::string one_video);


    
   
    

    
double THRESH;
double THRESH_2;

const std::string single_path;
const std::string multi_path;
const std::string actionNames;


const uword col;
const uword row;
const uvec peo_train;
const uvec peo_test;
const int run;

int  N_cent;
bool ismultiAction;
rowvec  arma_multi_labels;
field <mat> featuresframe_video_i; // Each mat has all the vector features of that frame


//std::vector < vec > feat_video_i; not used
std::vector < vec > feat_all_videos_action_i;
std::vector < uword > lab_feature_vectors;
//std::vector < mat > diag_covs_all_videos;


field<std::string> actions;
field<std::string> videos;


  private:
    inline void features_per_action();
    inline mat  get_loglikelihoods(mat mat_features);

 
  
};